package com.daiyang.javabasics.代理.静态代理;
//1定义明星接口
 interface Star {
    void readLetter(String letter);
}
//真实明星
class RealStar implements Star {
    private String name;
    public RealStar(String name) {
        this.name = name;
    }
    @Override
    public void readLetter(String letter) {
        System.out.println(name + "读到了" + letter);
    }
}
// 3 经纪人类（代理）
//将目标对象注入代理类，在代理类中调用对应目标中类的方法
class StarAgent implements Star {
    private Star star;
    public StarAgent(Star star) {
        this.star = star;
    }
    @Override
    public void readLetter(String letter) {
        System.out.println("经纪人收到了粉丝来信");
        System.out.println("经纪人检查信件安全性");

        star.readLetter(letter); //转交给明星
        System.out.println("经纪人记录信件处理完");
    }
}

public class  StaticProxy{
    public static void main(String[] args) {
        //创建真实明星
        Star star = new RealStar("张三");
        //创建代理（经纪人）
        StarAgent agent = new StarAgent(star);
         //粉丝通过经济人送信
        agent.readLetter("你好");
    }
}
